/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.enums.TipoAla;
import br.com.foxinline.modelo.Arquivo;
import br.com.foxinline.modelo.Protocolo;
import br.com.foxinline.servico.ArquivoServico;
import br.com.foxinline.servico.ProtocoloServico;
import br.com.foxinline.util.Caracter;
import br.com.foxinline.util.Msg;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author ely
 */
@ViewScoped
@ManagedBean
public class ManagerCriarArquivo {

    @EJB
    ArquivoServico arquivoServico;
    @EJB
    ProtocoloServico protocoloServico;
    private Arquivo arquivo;
    private Protocolo protocolo;
    private Protocolo protocoloAtualizar;
    private String numeroProtocolo;
    private List<Protocolo> protocolos;

    @PostConstruct
    public void init() {
        arquivo = new Arquivo();
        protocolo = new Protocolo();
        protocolos = protocoloServico.findLimit(null);
    }

    public void atualizarArquivo() {
        try {
            protocoloAtualizar.getEtiqueta().setNumCaixa(arquivo.getNumCaixa());
            protocoloAtualizar.getEtiqueta().setAla(arquivo.getAla());
            protocoloAtualizar.getEtiqueta().setAnoArquivo(arquivo.getAnoArquivo());
            protocoloAtualizar.getEtiqueta().setEstante(arquivo.getEstante());
            protocoloAtualizar.getEtiqueta().setPratileira(arquivo.getPratileira());
            arquivoServico.atualizar(protocoloAtualizar.getEtiqueta());
            protocoloServico.atualizar(protocoloAtualizar);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception erro) {
        }
    }

    public void salvar() {
        numeroProtocolo = Caracter.removecaracter(numeroProtocolo);

        Protocolo p = protocoloServico.existProtocolo(Integer.parseInt(numeroProtocolo));
        if (p != null) {
            if (p.getEtiqueta() != null) {
                protocoloAtualizar = p;
                org.primefaces.context.RequestContext.getCurrentInstance().execute("dlg.show();");


            } else {

                arquivoServico.salvar(arquivo);
                p.setEtiqueta(arquivo);
                protocoloServico.atualizar(p);
                init();
                Msg.messagemInfo("Arquivo Salvo com Sucesso");
            }
        } else {
            Msg.messagemWarn("Não Existe Protocolo");
        }
    }

    public List<SelectItem> getTipoAla() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (TipoAla tipo : TipoAla.values()) {
            items.add(new SelectItem(tipo, tipo.getNome()));
        }
        return items;
    }
    
    public String numeroProtocolo(Integer numeroProtocolo) {

        if (numeroProtocolo != null) {
            String numero = String.valueOf(numeroProtocolo);
            String ano = numero.substring(numero.length() - 4);
            numero = numero.substring(0, numero.length() - 4);
            return String.format("%05d", Integer.parseInt(numero)).concat("/").concat(ano);
        }

        return null;
    }

    public Arquivo getArquivo() {
        return arquivo;
    }

    public void setArquivo(Arquivo arquivo) {
        this.arquivo = arquivo;
    }

    public Protocolo getProtocolo() {
        return protocolo;
    }

    public void setProtocolo(Protocolo protocolo) {
        this.protocolo = protocolo;
    }

    public String getNumeroProtocolo() {
        return numeroProtocolo;
    }

    public void setNumeroProtocolo(String numeroProtocolo) {
        this.numeroProtocolo = numeroProtocolo;
    }

    public List<Protocolo> getProtocolos() {
        return protocolos;
    }

    public void setProtocolos(List<Protocolo> protocolos) {
        this.protocolos = protocolos;
    }
}
